home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / nan_news / toolkit / flushcap.asm < prev    next >
Assembly Source File  |  1991-08-15  |  4KB  |  115 lines

  1. ; File......: FLUSHCAP.ASM
  2. ; Author....: James R. Zack
  3. ; CIS ID....: 75410,1567
  4. ; Date......: $Date:   15 Aug 1991 23:06:46  $
  5. ; Revision..: $Revision:   1.2  $
  6. ; Log File..: $Logfile:   E:/nanfor/src/flushcap.asv  $
  7. ;
  8. ; This is an original work by James R. Zack and is placed in the
  9. ; public domain.
  10. ;
  11. ; Modification history:
  12. ; ---------------------
  13. ;
  14. ; $Log:   E:/nanfor/src/flushcap.asv  $
  15. ;  
  16. ;     Rev 1.2   15 Aug 1991 23:06:46   GLENN
  17. ;  Forest Belt proofread/edited/cleaned up doc
  18. ;  
  19. ;     Rev 1.1   14 Jun 1991 19:54:32   GLENN
  20. ;  Minor edit to file header
  21. ;  
  22. ;     Rev 1.0   01 Apr 1991 01:03:20   GLENN
  23. ;  Nanforum Toolkit
  24. ;  
  25. ;
  26.  
  27.  
  28. ; $DOC$
  29. ; $FUNCNAME$
  30. ;     FT_PFLUSH()
  31. ; $CATEGORY$
  32. ;     NetWare
  33. ; $ONELINER$
  34. ;     Flush a NetWare capture buffer
  35. ; $SYNTAX$
  36. ;     FT_PFLUSH( [ <nLPTPortNumber> ] ) -> NIL
  37. ; $ARGUMENTS$
  38. ;     <nLPTPortNumber> is the captured LPT port number to flush.  If the
  39. ;     parameter is omitted, the default port or LPT1: is used.
  40. ; $RETURNS$
  41. ;     NIL
  42. ; $DESCRIPTION$
  43. ;    This routine is used to force a Novell NetWare capture buffer to print
  44. ;    it's contents.  This is useful for printing reports with a filter set
  45. ;    and you don't know how long it will be between print statements.  With
  46. ;    a FT_PFLUSH() function at the end of any printing, you can have the
  47. ;    timeout value for any capture set to 0 (zero).
  48. ;
  49. ;    This routine was designed and written for Advanced NetWare 286 v 2.0 or
  50. ;    NetWare 386 v 3.0 or better.  It has been tested on Advanced NetWare 286
  51. ;    v 2.15 rev A & C, NetWare 386 v 3.0.
  52. ;
  53. ;    This source code was written for Microsoft Macro Assembler v5.1.
  54. ; $EXAMPLES$
  55. ;    (in DOS)
  56. ;    F:>CAPTURE S=ServerName Q=PrintQueueName TI=0 L=1
  57. ;
  58. ;    (in your Clipper application)
  59. ;    SET FILTER TO Left( FONELIST->PHONENUM, 3 ) == "415"
  60. ;    GO TOP
  61. ;    SET PRINT ON
  62. ;    DO WHILE .NOT. Eof()
  63. ;      ? fonelist->lastname...
  64. ;      SKIP
  65. ;    ENDDO
  66. ;    FT_PFLUSH(1)     && I could just say FT_PFLUSH() here as well.
  67. ; $END$
  68.  
  69.  
  70. PUBLIC   FT_PFLUSH                         ; MAKE FUNCTION VISIBLE
  71.  
  72. EXTRN    __PARNI:FAR                       ; DECLARE EXTERNALS
  73. EXTRN    __RET:FAR
  74.  
  75. _NANFOR  SEGMENT 'CODE'
  76.          ASSUME  CS:_NANFOR
  77. FT_PFLUSH PROC    FAR
  78.           PUSH    BP                        ; SAVE BASE POINTER
  79.           MOV     BP,SP                     ; POINT TO TOP OF STACK
  80.           PUSH    DS                        ; SAVE REGISTERS
  81.           PUSH    ES
  82.           PUSH    SI
  83.           PUSH    DI
  84.           MOV     AX,01                     ; POINT TO FIRST PARAM PASSED
  85.           PUSH    AX                        ; PUSH IT ONTO STACK FOR PARNI
  86.           CALL    __PARNI                   ; GO GET FIRST PARAM
  87.           ADD     SP,2                      ; RESET STACK AFTER PARNI
  88.           CMP     AX,00                     ; WAS A VALUE PASSED?
  89.           JE      PSELECT                   ; NO, ASSUME LPT1:
  90.           DEC     AX                        ; SUBTRACT 1 FROM PRINTER NUMBER
  91.  
  92. ; THE REASON FOR DEDUCTING 1 FROM THE PRINTER NUMBER PASSED IS THAT NOVELL
  93. ; ASSUMES PRINTERS AS FOLLOWS:  PORT NUMBER  == PORT NAME
  94. ;                               -----------     ---------
  95. ;                                   0        ==   LPT1:
  96. ;                                   1        ==   LPT2:
  97. ;                                   2        ==   LPT3:
  98.  
  99. PSELECT:  MOV     DH,AL                     ; SET PRINTER PORT NUMBER INTO DH
  100.           MOV     AH,0DFH                   ; AH == FUNCTION DFH
  101.           MOV     DL,07H                    ; DL == SUBFUNCTION 07H
  102.           INT     21H                       ; CALL (Flush Specific LPT Capture)
  103.           pop     di                        ; Restore registers
  104.           pop     si
  105.           pop     es
  106.           pop     ds
  107.           pop     bp
  108.           call    __RET                     ; Set up for return to Clipper
  109.           ret                               ; Pass control back to Clipper
  110. FT_PFLUSH ENDP
  111. _NanFor   ENDS
  112.           END
  113.  
  114.  
  115.